//-------------------------------------------------------------------
//	Copyright (c) 2010-2012 Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_VIRTUAL_FILE_SYSTEM_H
#define _UX_VIRTUAL_FILE_SYSTEM_H

#include "IFile.h"

namespace Engine
{
namespace FileSystem
{

	//
	// Virtual File System
	//

	class _EXPORT_ IVirtualFileSys : public CEngBaseObject
	{
	public:
		virtual ~IVirtualFileSys() {}

		virtual bool IsSupported(const string &sArchiveName) = 0;	// arhive file name
		virtual bool IsExist(const string &sArchiveName, const string &sFileName) = 0;
		virtual bool OpenFile(const string &sArchiveName, const string &sFileName, IFilePtr &pFile, e_file_open_flags::type eFlags) = 0;
		virtual bool OpenCryptFile(const string &sArchiveName, const string &sFileName, const char *pPassword, IFilePtr &pFile, e_file_open_flags::type eFlags) = 0;

		virtual e_file::type GetType() const = 0;
	};

//-------------------------------------------------------------------

}	// FileSystem
}	// Engine

#endif	// _UX_VIRTUAL_FILE_SYSTEM_H